home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / hobbspr2 / sprite.h < prev    next >
C/C++ Source or Header  |  1992-08-24  |  3KB  |  100 lines

  1. // Hobbes Sprite Library
  2.  
  3. #pragma hdrfile "sprite.SYM"
  4. #ifndef SPRITE_H
  5. #define SPRITE_H
  6.  
  7. #include<alloc.h>
  8.  
  9. #include"hobbes.h"
  10. #include"etc.h"
  11.  
  12.  
  13. /*
  14. Should add code to change the origin from (0,0) and the width of the
  15. destination bitmap (to perform clipping).  Maybe in TBitmapClip.
  16.  
  17. This is a fairly simple class encapsulating a single masked bitmap.  It
  18. can automatically load the bitmap from a file and display it anywhere on the
  19. screen.
  20. */
  21. class    TBitmap {
  22.  
  23.   private:
  24.     MaskedImage         Image;
  25.     char                 *Pixels;
  26.     char                *Mask;
  27.     int                    Width, Height;
  28.  
  29.   public:
  30.  
  31.             TBitmap() {}
  32.             TBitmap(char *fname) {
  33.                 Load_Bitmap(fname);
  34.                 }
  35.  
  36.     void    Load_Bitmap(char*);
  37.  
  38.     void    Draw(int, int);
  39.     BOOL    DrawCkHit(int, int);
  40.  
  41.     int        GetWidth(void)         { return Width;     }
  42.     int        GetHeight(void)        { return Height;     }
  43. };
  44.  
  45.  
  46. //----------------------------------------------------------------------------
  47. //----------------------------------------------------------------------------
  48.  
  49.  
  50.  
  51. /*
  52. This is my first attempt at a Sprite class.
  53.  
  54. It will:
  55. 1) Load the specified masked bitmaps into screen memory.
  56. 2) Keep track of where you sprite is, updating its position based on
  57.     the sprites speed and direction.
  58. 3) Allow simple animation by having the image of the sprite specified as a
  59.     parameter.  e.g. You have a sprite of a man walking.  Create sprites
  60.     named "man1.bit", "man2.bit" etc., and load them into the sprite.  Then,
  61.     keep a counter of which one is being displayed at the moment, and call
  62.     draw with the number of the bitmap you want displayed.
  63.     I use this in Bolo Binary to store the four different orientations of
  64.     the tanks/eggs/etc.
  65.  
  66. In the future I would like to add:
  67. 1) Clipping
  68. 2) Collision detection
  69.     This is tricky because different programs have different concepts of what
  70.     a "hit" is.  Bolo Binary makes the tank blow up if there are any non-black
  71.     pixels where the tank is about to be drawn.  Other programs might just
  72.     check to see if two sprites have touched.
  73. */
  74.  
  75. class     TSprite : public TPVector {
  76.   private:
  77.     TBitmap         **Bitmaps;
  78.     int                NumBitmaps;
  79.  
  80.   public:
  81.  
  82.             TSprite() : TPVector() {}
  83.             TSprite(char **fnames, int _numbitmaps) : TPVector() {
  84.                 Load_Sprites(fnames, _numbitmaps);
  85.                 }
  86.     void    Load_Sprites(char**, int);
  87.  
  88.     void    Draw(void);
  89.     void    Draw(int);
  90.     void     Draw(int bnum, int posX, int posY);
  91.     BOOL     DrawCkHit(int bnum, int posX, int posY);
  92.     void    Erase(void);
  93. };
  94.  
  95.  
  96. #endif
  97. #pragma hdrstop
  98. //*****************************************************************************
  99. // End of sprite.h
  100.